

//定位某一项在多维数据中的位置
/** 
 * @param needle 要查找的值
 * @param haystack 被查找的数组
 * @param property 当被查找项是对象时（ 数组对象嵌套 ）这个参数作为要查找的值的属性名称 ，如果是多维数组不会有任何影响
 * @param children 当被查找项是对象时（ 数组对象嵌套 ）这个参数作为子集合属性名称 ，如果是多维数组不会有任何影响
 * @return undefined | Object | *
 */

let array_search = function(haystack, needle, path = [], property = 'value', children = 'children') {
  if (
      haystack.some((item) => {
          if (item[property] === needle) {
              path.push(item[property]);
              return true;
          } else if (item[children]) {
              path.push(item[property]);
              if (array_search(item[children], needle, path)) {
                  return true;
              } else {
                  path = [];
                  return false;
              }
          } else {
            return false;
          }
      })
  ) {
      return path;
  } else {
      return null;
  }
};
export default array_search;